#ifndef NRPSTG_GAMEDATA_H
#define NRPSTG_GAMEDATA_H

class GamestateManager;
class Camera;
class GameRenderer;
class GuiManager;
class TextureManager;
class FontManager;
class SceneManager;

class GameData {
private:
    GamestateManager* _state_manager;
    Camera* _camera;
    GameRenderer* _renderer;
    GuiManager* _gui;
    TextureManager* _texture_manager;
    FontManager* _font;
    SceneManager* _scene;

    /**
     * This is used to determine the overall state of the game.
     * While the game is running, this is set to 0. When the game ends for
     * any reason, it is changed to a positive number, with the number indicating
     * the reason for the quit
     */
    int _run_code;
public:
    GameData(const int scr_size[]);
    ~GameData();

    GamestateManager* state_manager();
    Camera* camera();
    GameRenderer* renderer();
    GuiManager* gui();
    TextureManager* texture_manager();
    SceneManager* scene();
    FontManager* font();

    int run_code();
    void set_run_code(int c);
};

#endif